package org.domon.manager.sys.service;

import java.util.List;

import org.domon.manager.sys.model.Menu;
import org.domon.manager.sys.model.UserInfo;

/**
 * 功能菜单service
 * 
 * @author Domon Xie
 * 
 */
public interface SysMenuService {

	/**
	 * 保存菜单：新增或者修改
	 * 
	 * @param menu
	 *            菜单
	 * @param userInfo
	 *            创建者
	 * @return
	 */
	public Menu save(Menu menu, UserInfo userInfo);

	/**
	 * 删除菜单
	 * 
	 * @param menuId
	 *            菜单ID
	 */
	public void remove(int menuId);

	/**
	 * 根据条件查询菜单列表（不包含子菜单）
	 * 
	 * @return
	 */
	public List<Menu> query(Menu menu);

	/**
	 * 根据条件查询菜单列表（包含子菜单）
	 * 
	 * @param menuId
	 *            菜单ID
	 * @return
	 */
	public List<Menu> queryAll(Menu menu);

	/**
	 * 查询用户菜单
	 * 
	 * @param userId
	 *            用户ID
	 * @param menuId
	 *            菜单ID
	 * @return
	 */
	public Menu queryUserMenu(int userId, int menuId);

	/**
	 * 查询用户菜单（包括拥有权限的子菜单）
	 * 
	 * @param userId
	 *            用户ID
	 * @param menuId
	 *            菜单ID
	 * @return
	 */
	public Menu queryAllUserMenu(int userId, int menuId);

	/**
	 * 查询角色菜单
	 * 
	 * @param roleId
	 *            角色ID
	 * @param menuId
	 *            菜单ID
	 * @return
	 */
	public Menu queryRoleMenu(int roleId, int menuId);

	/**
	 * 查询角色菜单（包括拥有权限的子菜单）
	 * 
	 * @param roleId
	 *            角色ID
	 * @param menuId
	 *            菜单ID
	 * @return
	 */
	public Menu queryAllRoleMenu(int roleId, int menuId);
}
